During the manufacture of a computer system, the computer system may be configured to fit the needs of the customer or user of the computer system. Customization of a computer system often occurs through the addition of hardware or software components selected by the user to be added to the computer system. One computer system manufacturing model that permits customization is the build-to-order manufacturing model, in which the user is permitted to specify the details of the computer system to be manufactured, and the computer system is manufactured following receipt of the customer's order. In a build-to-order manufacturing process, the customer is able to select the hardware and software components that are to be included in the customer's computer system. The hardware components that may be selected by the customer for installation in the computer system include, for example, expansion cards, controllers, modems, network cards, and memory cards, among other available hardware components.
Because of the number of hardware components that are available for installation in a computer system during the manufacture of the computer system, the integration of the selected components in the computer system is critical to the manufacturing process. The integration of the hardware components comprises at least two goals. First, the selected hardware components must each function as intended when installed in the computer system, and, second, the selected hardware component must function with other components. Incompatibility or inoperability problems may occur if hardware components selected by the customer are improperly installed or conflict with one another following installation. Because of the possibility that some hardware components will not function when installed with other hardware components and because of the possibility that some hardware components will only work when installed in certain locations in the computer system, the manufacturers of computer systems and hardware components have developed an extensive and complex set of rules for the configuration of the numerous hardware components available for installation in a computer system.
In view of the variety of hardware components available for installation in a computer system, computer systems are becoming more difficult to manufacture in a build-to-order environment. Along with each hardware component that is available for installation in a computer system comes a complex set of rules regarding the installation of the component. Assigning a set of installation rules to each hardware component available for installation has become known as the rules-based approach to the configuration of computer systems. Despite knowledge of the configuration rules associated with each component slated to be installed in a computer system, it has proved difficult for computer system manufacturers to follow a set of complex configuration rules for the placement or installation of each of these numerous components available for installation. Configuration rules for installing a certain hardware component may directly conflict with configuration rules for installing one or more other hardware components. The configuration rules themselves may be unyielding. The improper placement or installation of a hardware component can cause a computer system to function improperly or operate at less than its optimum performance. Conflicts often occur because two or more hardware components are competing for the same resources in the computer system.
The rules for installing a certain hardware component may also vary from computer system to computer system. As such, the rules for installing a particular component may be different depending on the characteristics of the computer system being manufactured. Computer manufacturers have therefore had to learn all the variations of the configuration rules for each computer system being manufactured. Moreover, the configuration rules may differ for a given hardware component depending on the identity of any additional components that are slated to be installed in the computer system.
In addition to learning the various configuration rules, in many instances, computer system manufacturers have also had to learn exceptions to the rules. Exceptions to the configuration rules for a given hardware component may exist because of discovered incompatibilities between certain hardware components and certain computer systems. Other exceptions may arise because of discovered bugs or defects in the hardware component or computer system. These exceptions are often discovered by computer manufacturers through trial and error.
The configuration rules and their exceptions are not static, however. The universe of rules and instructions for a computer system is always changing. With each new hardware component that is introduced into the sales market by a hardware component manufacturer, configurations rules and exceptions are also introduced. The rules and exceptions for a given hardware component are often updated to ensure the proper configuration and operation of the hardware component and the computer systems containing the hardware component. Because of the frequency of rule changes, maintaining a current set of the configuration rules and exceptions is difficult.
Many of the hardware components to be installed within a computer system come with configuration rules in the form of electronic work instructions (EWIs). The EWIs detail how the hardware component should be configured. However, it is often difficult for computer builders to follow the complex set rules contained in EWIs because the EWIs often describe configuration in generic terms and are not tailored to the computer system being manufactured. As such, valuable time is being wasted by manufacturers on troubleshooting while computer system manufacturers attempt to install and configure computer system components on the basis of generic EWIs and trial and error. This process is problematic in a build-to-order environment, where computer manufacturers often manufacture a computer system that includes a configuration of components that has not been extensively tested by the computer manufacturer. In such an environment, generic EWIs are not sufficient, and the trial and error method wastes time, money, and resources.
Instead of a rules based approach for configuring hardware components during the manufacture of computer systems, some computer system manufacturers configure hardware components according to a constraint-based approach. In such a constraint-based configuration system, the manufacturer employs dependent variables that are linked to or associated with certain hardware components. For example, if the manufactured computer system is to have component Y, then component X must also be installed in the computer system. Thus, the requirement that the computer system use component X is a constraint on the use of component Y. The constraint-based approach is problematic in that some computer systems will not allow the computer manufacturer to manufacture a computer system that corresponds to the configuration mandated by the constraints. Further, the constraint-based approach does little to instruct the user as to the proper installation location for the selected hardware components. Instead, the constraints simply identify the collection of components that are required to be installed to accommodate other components.
Other computer system manufacturers have employed a functional approach to the configuration of hardware components in a computer system. According to the functional approach, the configuration of hardware components in the computer system is determined by the purpose or function to be performed by the hardware components. The functional approach, however, does not determine the physical location for the installation of the devices. Rather, the functional approach only defines the functions of the various hardware components.
Computer manufacturers have also attempted to combine the constraint-based and functional approaches to define a hardware configuration that is logical and generates a hardware relationship between hardware components and their physical location. The combination of the constraint-based approach and functional approach attempts to define a hardware configuration by defining the functions of the components and the constraints on the identity of components in the computer system. This approach, however, is problematic in that it does not identify a suitable location for the placement of each hardware component within the computer system.
Other computer manufacturers that have attempted a trial and error approach to hardware configuration have focused their analysis on such variables as the frequency of interrupt requests, direct memory address accesses, and BIOS calls. The trial and error techniques often involve an analysis of the BIOS manufacture and revision for each affected computer system. However, the trial and error techniques have often not included consideration of the firmware revision of selected hardware components of the computer system and the manner in which the firmware revisions affect the compatibility of hardware components within the computer system.